/*
 *************************************************************************
 * The contents of this file are subject to the Openbravo  Public  License
 * Version  1.1  (the  "License"),  being   the  Mozilla   Public  License
 * Version 1.1  with a permitted attribution clause; you may not  use this
 * file except in compliance with the License. You  may  obtain  a copy of
 * the License at http://www.openbravo.com/legal/license.html
 * Software distributed under the License  is  distributed  on  an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 * License for the specific  language  governing  rights  and  limitations
 * under the License.
 * The Original Code is Openbravo ERP.
 * The Initial Developer of the Original Code is Openbravo SLU
 * All portions are Copyright (C) 2008-2014 Openbravo SLU
 * All Rights Reserved.
 * Contributor(s):  ______________________________________.
 ************************************************************************
*/
package org.openbravo.model.common.enterprise;

import com.eam.data.EamFacilities;
import com.wms.entity.WmsDelivery;
import com.wms.entity.WmsInventory;
import com.wms.entity.WmsInventoryPlan;
import com.wms.entity.WmsMaterialList;
import com.wms.entity.WmsReturnGoods;
import com.wms.entity.WmsReturnMaterial;
import com.wms.entity.WmsReturnMaterialMx;
import com.wms.entity.WmsStorageInOut;
import com.wms.entity.Wms_Warehouse_Product;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.openbravo.base.structure.ActiveEnabled;
import org.openbravo.base.structure.BaseOBObject;
import org.openbravo.base.structure.ClientEnabled;
import org.openbravo.base.structure.OrganizationEnabled;
import org.openbravo.base.structure.Traceable;
import org.openbravo.model.ad.access.User;
import org.openbravo.model.ad.alert.Alert;
import org.openbravo.model.ad.system.Client;
/**
 * Entity class for entity Warehouse (stored in table M_Warehouse).
 *
 * NOTE: This class should not be instantiated directly. To instantiate this
 * class the {@link org.openbravo.base.provider.OBProvider} should be used.
 */
public class Warehouse extends BaseOBObject implements Traceable, ClientEnabled, OrganizationEnabled, ActiveEnabled {
    private static final long serialVersionUID = 1L;
    public static final String TABLE_NAME = "M_Warehouse";
    public static final String ENTITY_NAME = "Warehouse";
    public static final String PROPERTY_ID = "id";
    public static final String PROPERTY_CLIENT = "client";
    public static final String PROPERTY_ORGANIZATION = "organization";
    public static final String PROPERTY_ACTIVE = "active";
    public static final String PROPERTY_CREATIONDATE = "creationDate";
    public static final String PROPERTY_CREATEDBY = "createdBy";
    public static final String PROPERTY_UPDATED = "updated";
    public static final String PROPERTY_UPDATEDBY = "updatedBy";
    public static final String PROPERTY_SEARCHKEY = "searchKey";
    public static final String PROPERTY_NAME = "name";
    public static final String PROPERTY_DESCRIPTION = "description";
    public static final String PROPERTY_STORAGEBINSEPARATOR = "storageBinSeparator";
    public static final String PROPERTY_SHIPMENTVEHICLE = "shipmentVehicle";
    public static final String PROPERTY_SHIPPERCODE = "shipperCode";
    public static final String PROPERTY_FROMDOCUMENTNO = "fromDocumentNo";
    public static final String PROPERTY_TODOCUMENTNO = "toDocumentNo";
    public static final String PROPERTY_RETURNLOCATOR = "returnlocator";
    public static final String PROPERTY_ALLOCATED = "allocated";
    public static final String PROPERTY_EAMFACILITIES = "eamFacilities";
    public static final String PROPERTY_WARNVALUE = "warnValue";
    public static final String PROPERTY_IP = "ip";
    public static final String PROPERTY_ADALERTLIST = "aDAlertList";
    public static final String PROPERTY_ADUSERDEFAULTWAREHOUSELIST = "aDUserDefaultWarehouseList";
    public static final String PROPERTY_LOCATORLIST = "locatorList";
    public static final String PROPERTY_ORGANIZATIONWAREHOUSELIST = "organizationWarehouseList";
    public static final String PROPERTY_WMSDELIVERYLIST = "wmsDeliveryList";
    public static final String PROPERTY_WMSINVENTORYLIST = "wmsInventoryList";
    public static final String PROPERTY_WMSINVENTORYPLANLIST = "wmsInventoryPlanList";
    public static final String PROPERTY_WMSMATERIALLISTLIST = "wmsMaterialListList";
    public static final String PROPERTY_WMSMATERIALLISTAIMSWAREHOUSEIDLIST = "wmsMaterialListAimsWarehouseIDList";
    public static final String PROPERTY_WMSRETURNGOODSLIST = "wmsReturnGoodsList";
    public static final String PROPERTY_WMSRETURNMATERIALLIST = "wmsReturnMaterialList";
    public static final String PROPERTY_WMSRETURNMATERIALMXLIST = "wmsReturnMaterialMxList";
    public static final String PROPERTY_WMSSTORAGEINOUTLIST = "wmsStorageInOutList";
    public static final String PROPERTY_WMSWAREHOUSEPRODUCTLIST = "wmsWarehouseProductList";

    public Warehouse() {
        setDefaultValue(PROPERTY_ACTIVE, true);
        setDefaultValue(PROPERTY_STORAGEBINSEPARATOR, "*");
        setDefaultValue(PROPERTY_SHIPMENTVEHICLE, false);
        setDefaultValue(PROPERTY_ALLOCATED, false);
        setDefaultValue(PROPERTY_ADALERTLIST, new ArrayList<Object>());
        setDefaultValue(PROPERTY_ADUSERDEFAULTWAREHOUSELIST, new ArrayList<Object>());
        setDefaultValue(PROPERTY_LOCATORLIST, new ArrayList<Object>());
        setDefaultValue(PROPERTY_ORGANIZATIONWAREHOUSELIST, new ArrayList<Object>());
        setDefaultValue(PROPERTY_WMSDELIVERYLIST, new ArrayList<Object>());
        setDefaultValue(PROPERTY_WMSINVENTORYLIST, new ArrayList<Object>());
        setDefaultValue(PROPERTY_WMSINVENTORYPLANLIST, new ArrayList<Object>());
        setDefaultValue(PROPERTY_WMSMATERIALLISTLIST, new ArrayList<Object>());
        setDefaultValue(PROPERTY_WMSMATERIALLISTAIMSWAREHOUSEIDLIST, new ArrayList<Object>());
        setDefaultValue(PROPERTY_WMSRETURNGOODSLIST, new ArrayList<Object>());
        setDefaultValue(PROPERTY_WMSRETURNMATERIALLIST, new ArrayList<Object>());
        setDefaultValue(PROPERTY_WMSRETURNMATERIALMXLIST, new ArrayList<Object>());
        setDefaultValue(PROPERTY_WMSSTORAGEINOUTLIST, new ArrayList<Object>());
        setDefaultValue(PROPERTY_WMSWAREHOUSEPRODUCTLIST, new ArrayList<Object>());
    }

    @Override
    public String getEntityName() {
        return ENTITY_NAME;
    }

    public String getId() {
        return (String) get(PROPERTY_ID);
    }

    public void setId(String id) {
        set(PROPERTY_ID, id);
    }

    public Client getClient() {
        return (Client) get(PROPERTY_CLIENT);
    }

    public void setClient(Client client) {
        set(PROPERTY_CLIENT, client);
    }

    public Organization getOrganization() {
        return (Organization) get(PROPERTY_ORGANIZATION);
    }

    public void setOrganization(Organization organization) {
        set(PROPERTY_ORGANIZATION, organization);
    }

    public Boolean isActive() {
        return (Boolean) get(PROPERTY_ACTIVE);
    }

    public void setActive(Boolean active) {
        set(PROPERTY_ACTIVE, active);
    }

    public Date getCreationDate() {
        return (Date) get(PROPERTY_CREATIONDATE);
    }

    public void setCreationDate(Date creationDate) {
        set(PROPERTY_CREATIONDATE, creationDate);
    }

    public User getCreatedBy() {
        return (User) get(PROPERTY_CREATEDBY);
    }

    public void setCreatedBy(User createdBy) {
        set(PROPERTY_CREATEDBY, createdBy);
    }

    public Date getUpdated() {
        return (Date) get(PROPERTY_UPDATED);
    }

    public void setUpdated(Date updated) {
        set(PROPERTY_UPDATED, updated);
    }

    public User getUpdatedBy() {
        return (User) get(PROPERTY_UPDATEDBY);
    }

    public void setUpdatedBy(User updatedBy) {
        set(PROPERTY_UPDATEDBY, updatedBy);
    }

    public String getSearchKey() {
        return (String) get(PROPERTY_SEARCHKEY);
    }

    public void setSearchKey(String searchKey) {
        set(PROPERTY_SEARCHKEY, searchKey);
    }

    public String getName() {
        return (String) get(PROPERTY_NAME);
    }

    public void setName(String name) {
        set(PROPERTY_NAME, name);
    }

    public String getDescription() {
        return (String) get(PROPERTY_DESCRIPTION);
    }

    public void setDescription(String description) {
        set(PROPERTY_DESCRIPTION, description);
    }

    public String getStorageBinSeparator() {
        return (String) get(PROPERTY_STORAGEBINSEPARATOR);
    }

    public void setStorageBinSeparator(String storageBinSeparator) {
        set(PROPERTY_STORAGEBINSEPARATOR, storageBinSeparator);
    }

    public Boolean isShipmentVehicle() {
        return (Boolean) get(PROPERTY_SHIPMENTVEHICLE);
    }

    public void setShipmentVehicle(Boolean shipmentVehicle) {
        set(PROPERTY_SHIPMENTVEHICLE, shipmentVehicle);
    }

    public String getShipperCode() {
        return (String) get(PROPERTY_SHIPPERCODE);
    }

    public void setShipperCode(String shipperCode) {
        set(PROPERTY_SHIPPERCODE, shipperCode);
    }

    public Long getFromDocumentNo() {
        return (Long) get(PROPERTY_FROMDOCUMENTNO);
    }

    public void setFromDocumentNo(Long fromDocumentNo) {
        set(PROPERTY_FROMDOCUMENTNO, fromDocumentNo);
    }

    public Long getToDocumentNo() {
        return (Long) get(PROPERTY_TODOCUMENTNO);
    }

    public void setToDocumentNo(Long toDocumentNo) {
        set(PROPERTY_TODOCUMENTNO, toDocumentNo);
    }

    public Locator getReturnlocator() {
        return (Locator) get(PROPERTY_RETURNLOCATOR);
    }

    public void setReturnlocator(Locator returnlocator) {
        set(PROPERTY_RETURNLOCATOR, returnlocator);
    }

    public Boolean isAllocated() {
        return (Boolean) get(PROPERTY_ALLOCATED);
    }

    public void setAllocated(Boolean allocated) {
        set(PROPERTY_ALLOCATED, allocated);
    }

    public EamFacilities getEamFacilities() {
        return (EamFacilities) get(PROPERTY_EAMFACILITIES);
    }

    public void setEamFacilities(EamFacilities eamFacilities) {
        set(PROPERTY_EAMFACILITIES, eamFacilities);
    }

    public BigDecimal getWarnValue() {
        return (BigDecimal) get(PROPERTY_WARNVALUE);
    }

    public void setWarnValue(BigDecimal warnValue) {
        set(PROPERTY_WARNVALUE, warnValue);
    }

    public String getIp() {
        return (String) get(PROPERTY_IP);
    }

    public void setIp(String ip) {
        set(PROPERTY_IP, ip);
    }

    @SuppressWarnings("unchecked")
    public List<Alert> getADAlertList() {
      return (List<Alert>) get(PROPERTY_ADALERTLIST);
    }

    public void setADAlertList(List<Alert> aDAlertList) {
        set(PROPERTY_ADALERTLIST, aDAlertList);
    }

    @SuppressWarnings("unchecked")
    public List<User> getADUserDefaultWarehouseList() {
      return (List<User>) get(PROPERTY_ADUSERDEFAULTWAREHOUSELIST);
    }

    public void setADUserDefaultWarehouseList(List<User> aDUserDefaultWarehouseList) {
        set(PROPERTY_ADUSERDEFAULTWAREHOUSELIST, aDUserDefaultWarehouseList);
    }

    @SuppressWarnings("unchecked")
    public List<Locator> getLocatorList() {
      return (List<Locator>) get(PROPERTY_LOCATORLIST);
    }

    public void setLocatorList(List<Locator> locatorList) {
        set(PROPERTY_LOCATORLIST, locatorList);
    }

    @SuppressWarnings("unchecked")
    public List<OrgWarehouse> getOrganizationWarehouseList() {
      return (List<OrgWarehouse>) get(PROPERTY_ORGANIZATIONWAREHOUSELIST);
    }

    public void setOrganizationWarehouseList(List<OrgWarehouse> organizationWarehouseList) {
        set(PROPERTY_ORGANIZATIONWAREHOUSELIST, organizationWarehouseList);
    }

    @SuppressWarnings("unchecked")
    public List<WmsDelivery> getWmsDeliveryList() {
      return (List<WmsDelivery>) get(PROPERTY_WMSDELIVERYLIST);
    }

    public void setWmsDeliveryList(List<WmsDelivery> wmsDeliveryList) {
        set(PROPERTY_WMSDELIVERYLIST, wmsDeliveryList);
    }

    @SuppressWarnings("unchecked")
    public List<WmsInventory> getWmsInventoryList() {
      return (List<WmsInventory>) get(PROPERTY_WMSINVENTORYLIST);
    }

    public void setWmsInventoryList(List<WmsInventory> wmsInventoryList) {
        set(PROPERTY_WMSINVENTORYLIST, wmsInventoryList);
    }

    @SuppressWarnings("unchecked")
    public List<WmsInventoryPlan> getWmsInventoryPlanList() {
      return (List<WmsInventoryPlan>) get(PROPERTY_WMSINVENTORYPLANLIST);
    }

    public void setWmsInventoryPlanList(List<WmsInventoryPlan> wmsInventoryPlanList) {
        set(PROPERTY_WMSINVENTORYPLANLIST, wmsInventoryPlanList);
    }

    @SuppressWarnings("unchecked")
    public List<WmsMaterialList> getWmsMaterialListList() {
      return (List<WmsMaterialList>) get(PROPERTY_WMSMATERIALLISTLIST);
    }

    public void setWmsMaterialListList(List<WmsMaterialList> wmsMaterialListList) {
        set(PROPERTY_WMSMATERIALLISTLIST, wmsMaterialListList);
    }

    @SuppressWarnings("unchecked")
    public List<WmsMaterialList> getWmsMaterialListAimsWarehouseIDList() {
      return (List<WmsMaterialList>) get(PROPERTY_WMSMATERIALLISTAIMSWAREHOUSEIDLIST);
    }

    public void setWmsMaterialListAimsWarehouseIDList(List<WmsMaterialList> wmsMaterialListAimsWarehouseIDList) {
        set(PROPERTY_WMSMATERIALLISTAIMSWAREHOUSEIDLIST, wmsMaterialListAimsWarehouseIDList);
    }

    @SuppressWarnings("unchecked")
    public List<WmsReturnGoods> getWmsReturnGoodsList() {
      return (List<WmsReturnGoods>) get(PROPERTY_WMSRETURNGOODSLIST);
    }

    public void setWmsReturnGoodsList(List<WmsReturnGoods> wmsReturnGoodsList) {
        set(PROPERTY_WMSRETURNGOODSLIST, wmsReturnGoodsList);
    }

    @SuppressWarnings("unchecked")
    public List<WmsReturnMaterial> getWmsReturnMaterialList() {
      return (List<WmsReturnMaterial>) get(PROPERTY_WMSRETURNMATERIALLIST);
    }

    public void setWmsReturnMaterialList(List<WmsReturnMaterial> wmsReturnMaterialList) {
        set(PROPERTY_WMSRETURNMATERIALLIST, wmsReturnMaterialList);
    }

    @SuppressWarnings("unchecked")
    public List<WmsReturnMaterialMx> getWmsReturnMaterialMxList() {
      return (List<WmsReturnMaterialMx>) get(PROPERTY_WMSRETURNMATERIALMXLIST);
    }

    public void setWmsReturnMaterialMxList(List<WmsReturnMaterialMx> wmsReturnMaterialMxList) {
        set(PROPERTY_WMSRETURNMATERIALMXLIST, wmsReturnMaterialMxList);
    }

    @SuppressWarnings("unchecked")
    public List<WmsStorageInOut> getWmsStorageInOutList() {
      return (List<WmsStorageInOut>) get(PROPERTY_WMSSTORAGEINOUTLIST);
    }

    public void setWmsStorageInOutList(List<WmsStorageInOut> wmsStorageInOutList) {
        set(PROPERTY_WMSSTORAGEINOUTLIST, wmsStorageInOutList);
    }

    @SuppressWarnings("unchecked")
    public List<Wms_Warehouse_Product> getWmsWarehouseProductList() {
      return (List<Wms_Warehouse_Product>) get(PROPERTY_WMSWAREHOUSEPRODUCTLIST);
    }

    public void setWmsWarehouseProductList(List<Wms_Warehouse_Product> wmsWarehouseProductList) {
        set(PROPERTY_WMSWAREHOUSEPRODUCTLIST, wmsWarehouseProductList);
    }

}
